/**
 * 音频
 */

let audio = null;
let ready = false;  // 是否可以播放音频
let num = 1;  // 当前循环次数
let loops = 1;  // 循环次数(默认1次)

// 初始化
export function getAudio() {
  init();
  reset();
}

// 播放提示音
export function playAudio() {
  if(ready) {
    audio.play();
  }
}

// 循环播放提示音
export function playAudioLoop(num) {
  if(num && num < 1) {
    throw new Error('循环次数不可小于1')
  }
  if(ready) {
    if(num) {
      loops = num;
    }
    audio.play();
  }
}

// 停止播放提示音
export function stopAudio() {
  if(!audio.ended) {
    audio.pause();
  }
}

/**
 * 获取Audio
 */
function init() {
  if(!audio) {
    audio = document.getElementById('audioRef');

    // 浏览器能够播放媒体，但估计以当前播放速率不能直接将媒体播放完，播放期间需要缓冲
    audio.addEventListener("canplay", function() {
      // console.log('提示音可以播放了')
      ready = true;
    }, false);

    // 即将开始播放，当执行了play方法时触发，或数据下载后元素被设置为autoplay属性
    audio.addEventListener("play", function() {
      // console.log('提示音开始播放')
    }, false);

    // 播放暂停，当执行了pause方法时触发，当播放完音频时也会触发
    audio.addEventListener("pause", function() {
      // console.log('提示音暂停播放')
      num++;
      if(num > loops) {
        audio.pause();
        reset();
      } else {
        playAudio();
      }
    }, false);
  }
}

/**
 * 重置计数
 */
function reset() {
  num = 1;
  loops = 1;
  if(audio) {
    audio.currentTime = 0;
  }
}
